import type { ElementType, LegacyRef, ReactNode } from 'react';
import { IconEnum, SizeEnum } from '../common';

export interface ListOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 分割线
   */
  divided?: boolean;
  /**
   * 宽松
   */
  relaxed?: boolean | 'very';
  /**
   * 符号列表
   */
  bulleted?: boolean;
  /**
   * 水平
   */
  horizontal?: boolean;
  /**
   * 数字排序列表
   */
  ordered?: boolean;
  /**
   * 数字排序后缀“.”；仅数字排序列表有效
   */
  suffixed?: boolean;
  /**
   * 链接
   */
  link?: boolean;
  /**
   * 深色背景
   */
  inverted?: boolean;
  /**
   * 垂直对齐方式
   */
  aligned?: 'top' | 'middle' | 'bottom';
  /**
   * 选择
   */
  selection?: boolean;
  /**
   * 动画
   */
  animated?: boolean;
  /**
   * 划分
   */
  celled?: boolean;
  /**
   * 尺寸大小
   */
  size?: SizeEnum;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}

export interface ListItemOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 激活
   */
  active?: boolean;
  /**
   * 图标
   */
  icon?: IconEnum;
  /**
   * 内容
   */
  content?: ReactNode;
  /**
   * 有序列表的值
   */
  value?: string;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}

export interface ListContentOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 垂直对齐方式
   */
  aligned?: 'top' | 'middle' | 'bottom';
  /**
   * 浮动
   */
  floated?: 'left' | 'right';
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}

export interface ListHeaderOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}

export interface ListDescriptionOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}

export interface ListIconOptions {
  aligned?: 'top' | 'middle' | 'bottom';
}

export interface ListListOptions {
  /**
   * 标签或组件名称
   * @default div
   */
  as?: ElementType;
  /**
   * 转发 ref
   */
  forwardedRef?: LegacyRef<HTMLElement>;
}
